/* Nama File : Polygon.h                            */
/* Deskripsi : File header dari class Polygon       */
/* Anggota Kelompok : Dekha Anggareska 13510050		*/
/*                    Fadhil Muhtadin 13510070		*/
/*                    Muhammad Iqbal 13510064		*/
/*                    Yulius Nainggolan 13510090	*/

#ifndef Polygon_h
#define Polygon_h

#include "../../bidang/bidang/Bidang.h"
#include <iostream>
using namespace std;

class Polygon : public Bidang{
	public:
	/* empat sekawan */
	Polygon();
	/* konstruktor bidang */
	/* I.S. Polygon belum ada */
	/* F.S. Polygon tercipta */
	Polygon(int);
	// ctor dengan parameter
	// I.S. Polygon belum ada
	// F.S. Polygon tercipta
	Polygon(const Polygon&);
	/* CCtor Polygon */
    /* I.S. Polygon terdefinisi */
    /* F.S. Polygon baru tercipta sebagai kopi Polygon sebelumnya */
	~Polygon();
	/* Destruktor Polygon */
	/* I.S. Polygon terdefinisi */
    /* F.S. Polygon dimusnahkan */ 
    Polygon& operator=(const Polygon&);
    /* operator assignment Polygon */
    /* I.S. Polygon input terdefinisi */
    /* F.S. Polygon output sama dengan input dengan alokasi memori tersendiri */
	
	// getter and setter
	
	Cell getCorner(int) const;
	/* Mengembalikan nilai Cell dari array Cell berindeks i */
    void setCorner(int, Cell);
	/* Mengeset nilai Cell sudut berindeks i dengan Cell input */
	/* I.S. Polygon terdefinisi */
	/* F.S. Cell dalam array berindeks i == Cell input */
	
	/* Method Lain */
	int isPointInside(Cell);
	/* Mengembalikan 1 bila Cell input berada dalam Polygon, 0 bila tidak */
	
	Cell TopMostPoint();
	/* Mengembalikan Cell yang berada paling atas diantara titik sudut Polygon */
	Cell BottomMostPoint();
	/* Mengembalikan Cell yang berada paling bawah diantara titik sudut Polygon */
   
    private:
    Cell* aCorner; //array of Titik sudut
 
 };
   
  #endif